package co.edu.eam.persitencia.entidades;

import java.io.Serializable;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.OneToMany;
import javax.persistence.Table;

/**
 * Entidad que representa los articulos de la clinica.
 *
 */
@Entity
@Table(name = "clinica_articulo")
@Inheritance(strategy = InheritanceType.JOINED)
public class Articulo implements Serializable {

    /**
     * Identificador unico de la entidad.
     */
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "articulo_id")
    private Long id;
    /**
     * Codigo del articulo.
     */
    @Column(name = "articulo_codigo")
    private String codigo;
    /**
     * Nombre del articulo.
     */
    @Column(name = "articulo_nombre")
    private String nombre;
    /**
     * Precio del articulo.
     */
    @Column(name = "articulo_precio")
    private double precio;
    /**
     * cantidad de articulos
     */
    @Column(name = "articulo_cantidad")
    private int cantidad;
    /**
     * Lista de detalles de formula medica.
     */
    @OneToMany(mappedBy = "articulo")
    private List<DetalleFormulaMedica> detallesFormulaMedica;
    /**
     * Inventario de este articulo.
     */
    @OneToMany(mappedBy = "articulo")
    private List<Inventario> inventario;

    /**
     * Consructor sin paremeros.
     */
    public Articulo() {
        super();
    }

    public Articulo(Long id, String codigo, String nombre, double precio, int cantidad, List<DetalleFormulaMedica> detallesFormulaMedica, List<Inventario> inventario) {
        this.id = id;
        this.codigo = codigo;
        this.nombre = nombre;
        this.precio = precio;
        this.cantidad = cantidad;
        this.detallesFormulaMedica = detallesFormulaMedica;
        this.inventario = inventario;
    }

    /**
     * @return the id
     */
    public Long getId() {
        return id;
    }

    /**
     * @param id the id to set
     */
    public void setId(Long id) {
        this.id = id;
    }

    /**
     * @return the codigo
     */
    public String getCodigo() {
        return codigo;
    }

    /**
     * @param codigo the codigo to set
     */
    public void setCodigo(String codigo) {
        this.codigo = codigo;
    }

    /**
     * @return the nombre
     */
    public String getNombre() {
        return nombre;
    }

    /**
     * @param nombre the nombre to set
     */
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    /**
     * @return the precio
     */
    public double getPrecio() {
        return precio;
    }

    /**
     * @param precio the precio to set
     */
    public void setPrecio(double precio) {
        this.precio = precio;
    }

    /**
     * @return the detallesFormulaMedica
     */
    public List<DetalleFormulaMedica> getDetallesFormulaMedica() {
        return detallesFormulaMedica;
    }

    /**
     * @param detallesFormulaMedica the detallesFormulaMedica to set
     */
    public void setDetallesFormulaMedica(List<DetalleFormulaMedica> detallesFormulaMedica) {
        this.detallesFormulaMedica = detallesFormulaMedica;
    }

    /**
     * @return the inventario
     */
    public List<Inventario> getInventario() {
        return inventario;
    }

    /**
     * @param inventario the inventario to set
     */
    public void setInventario(List<Inventario> inventario) {
        this.inventario = inventario;
    }

    public String toString() {
        return nombre;
    }

    public int getCantidad() {
        return cantidad;
    }

    public void setCantidad(int cantidad) {
        this.cantidad = cantidad;
    }
}
